// 管理仓库实例
import { createStore } from "vuex";
// import { CHANGE_AGE } from "./mutation-types";

import moduleA from "./modules/a";
import moduleB from "./modules/b";

const store = createStore({
  modules: {
    a: moduleA,
    b: moduleB,
  },
});

// const store = createStore({
//   // state就是放全局的数据的
//   state: {
//     name: "zhangsan",
//     age: 20,
//     height: 180,
//     likes: ["c", "t", "r", "l"],
//     list: [],
//   },

//   // getters就相当于是仓库的计算属性
//   // 可以让我们先计算好，直接在组件里面用
//   getters: {
//     // getters有两个参数，分别是state和getters
//     // getters需要传参的时候，要写成柯里化(curry)函数
//     doubleAge: (state) => (n) => state.age * n,
//     reverseName(state, getters) {
//       return state.name.split("").reverse().join("") + getters.doubleAge(3);
//     },
//   },

// mutations就是用来修改仓库的数据的
// mutations是唯一可以改变数据的地方
// 里面是写函数的
// mutations里面必须是同步函数
// 每当我们用mutation改变数据的时候，在旧版本的开发工具里面都会有一条记录（几点几分哪个变量从什么变成了什么）
// 这条记录是mutations函数触发的时候产生的,并不是数据改变的时候产生的,假设10 -> 11
//   mutations: {
//     changeName(state) {
//       state.name = "lisi";
// },
// mutations还可以接受第二个参数
// 一般用payload作为形参
// [CHANGE_AGE](state, payload) {
//     changeAge(state, payload) {
// payload载荷，参数
// console.log(payload.n);
// setTimeout(() => {
//       state.age += payload.n;
//       // }, 1000);
//     },
//     changeHeight(state, payload) {
//       state.height *= payload.n;
//     },
//     getList(state, payload) {
//       state.list = payload.result;
//     },
//   },

//   // 处理异步函数的
//   // 也是写函数的,并且这个函数可以写异步
//   actions: {
//     asyncChangeHeight({ commit }, payload) {
//       setTimeout(() => {
//         // console.log(context);
//         commit("changeHeight", payload);
//       }, 1000);
//     },
//     asyncGetList({ commit }) {
//       // 目的就是让组件里面知道actions的异步什么时候结束
//       return new Promise((resolve) => {
//         fetch("http://www.pudge.wang:3080/api/rated/list")
//           .then((response) => response.json())
//           .then((res) => {
//             commit("getList", res);
//             resolve();
//           });
//       });
//     },
//   },
// });

export default store;
